package javaExer.InnerClass;

public class 静态内部类 {
    public static void main(String[] args) {
        //外部类访问静态内部类的方式
        //方式一
        Outer03.Inner inner = new Outer03.Inner();
        inner.m1();

        //方式二
        Outer03.Inner inner1 = Outer03.getInner();
        inner.m1();
    }
}

class Outer03 {
    private int n1 = 10;
    private static String name = "张三";

    //静态内部类是定义在，外部类的成员位置上的
    //可以使用任意的修饰符，因为它的地位是一个 外部类的属性
    //可以访问外部类的所有静态属性，但不能访问非静态属性
    //本质是一个类
    static class Inner {
        private String name = "李四";

        public void m1() {
            //当访问的属性和外部类重名时，默认遵守就近原则，如果需要访问外部类的属性 则可以 (外部类名.属性名)
            System.out.println("外部类 name=" + Outer03.name);
        }
    }

    //方法设置成静态的 方便于调用，因为不需要创建对象实例 就可以访问了
    public static Inner getInner() {
        return new Inner();
    }
}
